コミットする (git commit)
git add をしたあと、git commit で選択されたファイルの変更を記録します。この変更を記録する操作を コミット (commit) する といいます。また、この操作によって生成された変更記録をコミットと呼びます。操作と変更単位の名称が同じですが、混同しないようにしましょう。操作は動詞形で、変更記録の名称は名詞形です。
コミットする
1. ステージングされているファイルを確認する
以下のコマンドを実行して、ステージングされているファイルが1つ以上あることを確認してください。
code: ステージングされたファイルの確認.sh
$ git status
On branch master
Changes to be committed: <- このメッセージ以下に1つ以上のファイルがあることを確認
(use "git restore --staged <file>..." to unstage)
new file: sample.txt
以下の場合はステージングされていません。git add でステージングしてください。
code: ステージングされていない場合.sh
$ git status # 実行例1
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
sample.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git status # 実行例2
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: sample.txt
no changes added to commit (use "git add" and/or "git commit -a")
2. コミットする
以下のコマンドを実行します。実行すると設定したエディタ (本資料の通りに設定した場合はVim) が起動します。1行目に作業内容を記述します。コミットする際には必ずコメントが求められます。コミットは作業の内容が簡単に説明できるくらいの粒度が良いでしょう。
今回は「初めてのコミット」と入力しましょう。
code: コミットする.sh
$ git commit
また、エディタを起動することなくコメントすることができます。
code: エディタを開かずにコメント.sh
$ git commit -m "${comment}"
使いやすい操作を選びましょう。
3. 結果を確認する
コミットしたあと、以下のコマンドを実行すると次のような表示になります。
code: コミット後の表示.sh
$ git status
On branch master
nothing to commit, working tree clean
これだけではよくわからないので、以下のコマンドで結果を確認してみます。
code: git log で結果確認.sh
$ git log
commit 364fc6535de4d54b469bb483580ab14f59289136 (HEAD -> master)
Author: ${ユーザ名} <${メールアドレス}>
Date: Thu Oct 15 02:34:58 2020 +0900
初めてのコミット
コミットしたときのメッセージが表示されました。コミットハッシュ、操作をした人、時間も同時に表示されています。
コミットハッシュとはGit 上での管理番号みたいなものです。ひとつのリポジトリに同じハッシュは存在しません。この例では「364fc6535de4d54b469bb483580ab14f59289136」がコミットハッシュです。
また git status や git log は次の記事で詳細に説明します。
本記事では変更を記録する操作である「commit」を説明しました。次の記事では今の状態や履歴を表示する「status」「log」を説明します。
【TIPS】コミットメッセージを修正する
エディタやターミナルの操作ミスでコミットメッセージを修正したいときは、以下のコマンドで修正します。
code: git commit --amend.sh
$ git commit --amend
通常のコミットと同様、エディタを起動したくないときは以下のコマンドで修正します。
code: エディタ起動無し git commit --amend.sh
$ git commit --amend -m "${comment}"
【TIPS】なぜ git add と git commit に分かれるのか
変更の記録になぜ2つのステップを踏むのでしょうか?答えは簡単でコミットを分けられるからです。
とても進捗が出たとき、コミット単位を考えずにひたすら開発をするときがあるでしょう。その場合git add でファイルを選択することでコミットする対象を絞り込むことができます。
また git commit が一発勝負であることも理由のひとつだと筆者は考えます。git commit はステージングされた変更を一気に記録する性質があります。そのため複数回にわけてコマンドを実行することができません。一方で git add は複数回にわけた実行できます。そしてコミットは基本的に取り消しできません。
ちなみに git add と git commit を一度で済ますコマンドオプションも存在します。気になった方は調べてみてください。